package Apresentacao;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import negocio.*;

public class JanelaPrincipal extends javax.swing.JFrame {

    Gerente gerente;
    private Desktop desktop = Desktop.getInstance();
    
    public JanelaPrincipal(Gerente gerente) {
        this.gerente = gerente;
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jDesktopPane1 = desktop.getDesktopPane();
        jToolBar1 = new javax.swing.JToolBar();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenuSistema = new javax.swing.JMenu();
        jMenuItemSair = new javax.swing.JMenuItem();
        jMenuVeiculos = new javax.swing.JMenu();
        jMenuItemVeiculosNovo = new javax.swing.JMenuItem();
        jMenuItemVeiculosLista = new javax.swing.JMenuItem();
        jMenuItemVeiculosAbrir = new javax.swing.JMenuItem();
        jMenuClientes = new javax.swing.JMenu();
        jMenuItemClientesNovo = new javax.swing.JMenuItem();
        jMenuItemClientesLista = new javax.swing.JMenuItem();
        jMenuItemClientesAbrir = new javax.swing.JMenuItem();
        jMenuOrcamento = new javax.swing.JMenu();
        jMenuItemOrcNovo = new javax.swing.JMenuItem();
        jMenuItemOrcLista = new javax.swing.JMenuItem();
        jMenuItemOrcAbrir = new javax.swing.JMenuItem();
        jMenuPecas = new javax.swing.JMenu();
        jMenuItemPecasNovo = new javax.swing.JMenuItem();
        jMenuItemPecasLista = new javax.swing.JMenuItem();
        jMenuItemPecasAbrir = new javax.swing.JMenuItem();
        jMenuServicos = new javax.swing.JMenu();
        jMenuItemServNovo = new javax.swing.JMenuItem();
        jMenuItemServLista = new javax.swing.JMenuItem();
        jMenuItemServAbrir = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Cinéfilo");

        jToolBar1.setRollover(true);

        jMenuSistema.setText("Sistema");

        jMenuItemSair.setText("Sair");
        jMenuItemSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemSairActionPerformed(evt);
            }
        });
        jMenuSistema.add(jMenuItemSair);

        jMenuBar1.add(jMenuSistema);

        jMenuVeiculos.setText("Veiculos");

        jMenuItemVeiculosNovo.setText("Novo");
        jMenuItemVeiculosNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemVeiculosNovoActionPerformed(evt);
            }
        });
        jMenuVeiculos.add(jMenuItemVeiculosNovo);

        jMenuItemVeiculosLista.setText("Lista");
        jMenuItemVeiculosLista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemVeiculosListaActionPerformed(evt);
            }
        });
        jMenuVeiculos.add(jMenuItemVeiculosLista);

        jMenuItemVeiculosAbrir.setText("Abrir");
        jMenuItemVeiculosAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemVeiculosAbrirActionPerformed(evt);
            }
        });
        jMenuVeiculos.add(jMenuItemVeiculosAbrir);

        jMenuBar1.add(jMenuVeiculos);

        jMenuClientes.setText("Clientes");

        jMenuItemClientesNovo.setText("Novo");
        jMenuItemClientesNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemClientesNovoActionPerformed(evt);
            }
        });
        jMenuClientes.add(jMenuItemClientesNovo);

        jMenuItemClientesLista.setText("Lista");
        jMenuItemClientesLista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemClientesListaActionPerformed(evt);
            }
        });
        jMenuClientes.add(jMenuItemClientesLista);

        jMenuItemClientesAbrir.setText("Abrir");
        jMenuItemClientesAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemClientesAbrirActionPerformed(evt);
            }
        });
        jMenuClientes.add(jMenuItemClientesAbrir);

        jMenuBar1.add(jMenuClientes);

        jMenuOrcamento.setText("Orcamento");

        jMenuItemOrcNovo.setText("Novo");
        jMenuItemOrcNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemOrcNovoActionPerformed(evt);
            }
        });
        jMenuOrcamento.add(jMenuItemOrcNovo);

        jMenuItemOrcLista.setText("Lista");
        jMenuItemOrcLista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemOrcListaActionPerformed(evt);
            }
        });
        jMenuOrcamento.add(jMenuItemOrcLista);

        jMenuItemOrcAbrir.setText("Abrir");
        jMenuItemOrcAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemOrcAbrirActionPerformed(evt);
            }
        });
        jMenuOrcamento.add(jMenuItemOrcAbrir);

        jMenuBar1.add(jMenuOrcamento);

        jMenuPecas.setText("Pecas");

        jMenuItemPecasNovo.setText("Novo");
        jMenuItemPecasNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemPecasNovoActionPerformed(evt);
            }
        });
        jMenuPecas.add(jMenuItemPecasNovo);

        jMenuItemPecasLista.setText("Lista");
        jMenuItemPecasLista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemPecasListaActionPerformed(evt);
            }
        });
        jMenuPecas.add(jMenuItemPecasLista);

        jMenuItemPecasAbrir.setText("Abrir");
        jMenuItemPecasAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemPecasAbrirActionPerformed(evt);
            }
        });
        jMenuPecas.add(jMenuItemPecasAbrir);

        jMenuBar1.add(jMenuPecas);

        jMenuServicos.setText("Servicos");

        jMenuItemServNovo.setText("Novo");
        jMenuItemServNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemServNovoActionPerformed(evt);
            }
        });
        jMenuServicos.add(jMenuItemServNovo);

        jMenuItemServLista.setText("Lista");
        jMenuItemServLista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemServListaActionPerformed(evt);
            }
        });
        jMenuServicos.add(jMenuItemServLista);

        jMenuItemServAbrir.setText("Abrir");
        jMenuItemServAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemServAbrirActionPerformed(evt);
            }
        });
        jMenuServicos.add(jMenuItemServAbrir);

        jMenuBar1.add(jMenuServicos);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 609, Short.MAX_VALUE)
            .addComponent(jDesktopPane1)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 378, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuItemSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSairActionPerformed
        this.dispose();
    }//GEN-LAST:event_jMenuItemSairActionPerformed

    // método extraído das funcionalidades comuns e variáveis
    // de cada evento do botão usado para abrir as janelas internas
    // o que é fixo está no método e o  que é variável é recebido como
    // parâmetro
    private void abrirJanela(JInternalFrame janela) {
        janela.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        desktop.show(janela);        
    }

    private void jMenuItemVeiculosNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemVeiculosNovoActionPerformed
        // chama método extraído        
        abrirJanela(new VeiculoNovoFrame());

    }//GEN-LAST:event_jMenuItemVeiculosNovoActionPerformed

    private void jMenuItemVeiculosListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemVeiculosListaActionPerformed
        // chama método extraído 
        abrirJanela(new VeiculoListaFrame());

    }//GEN-LAST:event_jMenuItemVeiculosListaActionPerformed

    private void jMenuItemVeiculosAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemVeiculosAbrirActionPerformed
        // refatorar para chamar o método abrirJanela
        String input = JOptionPane.showInputDialog(this, "Digite o código", "Abrir Veiculo", JOptionPane.QUESTION_MESSAGE);

        int id = toolkit.Strings.stringParaInteiro(input);

        Veiculo veiculo = new Veiculo();
        try {
            veiculo = gerente.buscaVeiculo(id);
        } catch (Exception ex) {
            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (veiculo != null) {
            VeiculoEditaFrame af = new VeiculoEditaFrame(veiculo);
            // sair da memória qdo fechar
            af.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            // adicionar no painel
            abrirJanela(af);
            // tornar ela visível            
        } else {
            JOptionPane.showMessageDialog(this, "Veiculo não encontrado", "Aviso", JOptionPane.INFORMATION_MESSAGE);
        }

    }//GEN-LAST:event_jMenuItemVeiculosAbrirActionPerformed

    private void jMenuItemClientesNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemClientesNovoActionPerformed
        abrirJanela(new ClienteNovoFrame());
    }//GEN-LAST:event_jMenuItemClientesNovoActionPerformed

    private void jMenuItemClientesListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemClientesListaActionPerformed
        abrirJanela(new ClienteListaFrame());
    }//GEN-LAST:event_jMenuItemClientesListaActionPerformed

    private void jMenuItemClientesAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemClientesAbrirActionPerformed
        String input = JOptionPane.showInputDialog(this, "Digite o código", "Abrir Cliente", JOptionPane.QUESTION_MESSAGE);

        int id = toolkit.Strings.stringParaInteiro(input);

        Cliente cliente = null;
        try {
            cliente = gerente.buscaCliente(id);
        } catch (Exception ex) {
            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (cliente != null) {
            ClienteEditaFrame af = new ClienteEditaFrame(cliente);
            abrirJanela(af);
        } else {
            JOptionPane.showMessageDialog(this, "Ator não encontrado", "Aviso", JOptionPane.INFORMATION_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItemClientesAbrirActionPerformed

    private void jMenuItemOrcNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemOrcNovoActionPerformed
        abrirJanela(new OrcamentoNovoFrame());
    }//GEN-LAST:event_jMenuItemOrcNovoActionPerformed

    private void jMenuItemOrcListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemOrcListaActionPerformed
        abrirJanela(new OrcamentoListaFrame());
    }//GEN-LAST:event_jMenuItemOrcListaActionPerformed

    private void jMenuItemOrcAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemOrcAbrirActionPerformed
        String input = JOptionPane.showInputDialog(this, "Digite o código", "Abrir Cliente", JOptionPane.QUESTION_MESSAGE);

        int id = toolkit.Strings.stringParaInteiro(input);

        Orcamento orcamento = null;
        try {
            orcamento = gerente.buscaOrcamento(id);
        } catch (Exception ex) {
            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (orcamento != null) {
            OrcamentoEditaFrame af = new OrcamentoEditaFrame(orcamento);
            abrirJanela(af);
        } else {
            JOptionPane.showMessageDialog(this, "Ator não encontrado", "Aviso", JOptionPane.INFORMATION_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItemOrcAbrirActionPerformed

    private void jMenuItemPecasNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemPecasNovoActionPerformed
        abrirJanela(new PecaNovoFrame());
    }//GEN-LAST:event_jMenuItemPecasNovoActionPerformed

    private void jMenuItemPecasListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemPecasListaActionPerformed
        abrirJanela(new PecaListaFrame());
    }//GEN-LAST:event_jMenuItemPecasListaActionPerformed

    private void jMenuItemPecasAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemPecasAbrirActionPerformed
        String input = JOptionPane.showInputDialog(this, "Digite o código", "Abrir Cliente", JOptionPane.QUESTION_MESSAGE);

        int id = toolkit.Strings.stringParaInteiro(input);

        Peca peca = null;
        try {
            peca = gerente.buscaPeca(id);
        } catch (Exception ex) {
            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (peca != null) {
            PecaEditaFrame af = new PecaEditaFrame(peca);
            abrirJanela(af);
        } else {
            JOptionPane.showMessageDialog(this, "Ator não encontrado", "Aviso", JOptionPane.INFORMATION_MESSAGE);
        }        // TODO add your handling code here:
    }//GEN-LAST:event_jMenuItemPecasAbrirActionPerformed

    private void jMenuItemServNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemServNovoActionPerformed
        abrirJanela(new ServicoNovoFrame());
    }//GEN-LAST:event_jMenuItemServNovoActionPerformed

    private void jMenuItemServListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemServListaActionPerformed
        abrirJanela(new ServicoListaFrame());
    }//GEN-LAST:event_jMenuItemServListaActionPerformed

    private void jMenuItemServAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemServAbrirActionPerformed
        String input = JOptionPane.showInputDialog(this, "Digite o código", "Abrir Servico", JOptionPane.QUESTION_MESSAGE);

        int id = toolkit.Strings.stringParaInteiro(input);

        Servico servico = null;
        try {
            servico = gerente.buscaServico(id);
        } catch (Exception ex) {
            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (servico != null) {
            ServicoEditaFrame af = new ServicoEditaFrame(servico);
            abrirJanela(af);
        } else {
            JOptionPane.showMessageDialog(this, "Ator não encontrado", "Aviso", JOptionPane.INFORMATION_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItemServAbrirActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JDesktopPane jDesktopPane1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenu jMenuClientes;
    private javax.swing.JMenuItem jMenuItemClientesAbrir;
    private javax.swing.JMenuItem jMenuItemClientesLista;
    private javax.swing.JMenuItem jMenuItemClientesNovo;
    private javax.swing.JMenuItem jMenuItemOrcAbrir;
    private javax.swing.JMenuItem jMenuItemOrcLista;
    private javax.swing.JMenuItem jMenuItemOrcNovo;
    private javax.swing.JMenuItem jMenuItemPecasAbrir;
    private javax.swing.JMenuItem jMenuItemPecasLista;
    private javax.swing.JMenuItem jMenuItemPecasNovo;
    private javax.swing.JMenuItem jMenuItemSair;
    private javax.swing.JMenuItem jMenuItemServAbrir;
    private javax.swing.JMenuItem jMenuItemServLista;
    private javax.swing.JMenuItem jMenuItemServNovo;
    private javax.swing.JMenuItem jMenuItemVeiculosAbrir;
    private javax.swing.JMenuItem jMenuItemVeiculosLista;
    private javax.swing.JMenuItem jMenuItemVeiculosNovo;
    private javax.swing.JMenu jMenuOrcamento;
    private javax.swing.JMenu jMenuPecas;
    private javax.swing.JMenu jMenuServicos;
    private javax.swing.JMenu jMenuSistema;
    private javax.swing.JMenu jMenuVeiculos;
    private javax.swing.JToolBar jToolBar1;
    // End of variables declaration//GEN-END:variables
}
